Automated video bumper system

ABSTRACT

In some embodiments, a method to process video data may include receiving an upload file; using the publication identifier, identifying a bumper video segment and retrieving the bumper video segment from a storage device; concatenating a video payload with the bumper video segment to create a concatenated video; using the publication identifier, identifying at least one third-party video service to which to publish the concatenated video; and/or transmitting the concatenated video, together with publication credentials, to the third-party video service.

BACKGROUND

User Generated Content (UGC) is becoming an increasingly valuable formof content that entities and brands are using to engage their users. Themanagement of such UGC by an entity or brand owner can present a numberof technical challenges (e.g., relating to the processing and moderationof such content). One form of UGC is user-captured video content (e.g.captured on the mobile device of the user). Current solutions to processsuch a video content, both by the user and partners in distribution ofthe content, are time-consuming and somewhat impractical. The automationof these processes also presents technical challenges that are not fullyaddressed by current solutions.

One specific example of such technical challenges relates to video andaudio production. A “bumper” is a video or audio segment may be used tointroduce or terminate main content. In current video productionsolutions, the generation of these bumper video segments, and thegeneration of a final video that includes these bumper video segments isa very manual process that is time-consuming

In today's fast-paced world that demands the near-real-time videoproduction and publication, the insertion of bumper videos into a finalproduction video can be a especially challenging, particularly for userswith limited a video production facilities and experience. Additionally,video content producers are often “out in the field”, and may not haveaccess to video production capabilities. Consider the situation in whicha video blogger wishes to create video content on the fly, while engagedin an activity (e.g., extreme sports). Currently, such a video bloggerwould need to capture video content, return to their video productioncomputer, and perform final production there. In addition to introducingunacceptable delay in the publication of video, the time demands on thevideo blogger may be excessive.

SUMMARY

In some embodiments, a method to process video data may includereceiving an upload file; using a publication identifier, identifying abumper video segment and retrieving the bumper video segment from astorage device; concatenating a video payload with the bumper videosegment to create a concatenated video; using the publicationidentifier, identifying at least one third-party video service to whichto publish the concatenated video; and/or transmitting the concatenatedvideo, together with publication credentials, to the third-party videoservice.

In some embodiments, the receiving of an upload file may include a videopayload and metadata.

In some embodiments, the metadata may include a publication identifieridentifying a publication entity.

In some embodiments, the method may include using the publicationidentifier, identifying an introduction bumper video segment and anending bumper video segment, and retrieving both the introduction andending bumper video segments from the storage device.

In some embodiments, the method may include concatenating the videopayload with the introduction bumper video segment so that theintroduction bumper video segment precedes the video payload in theconcatenated video, and concatenating the video payload to with it theending bumper video segment so that the ending bumper video segmentproceeds the video payload in the concatenated video.

In some embodiments, the publication identifier is a user identifier,indicating an individual user associated with the video payload.

In some embodiments, the publication identifier is a corporateidentifier, indicating a corporate entity associated with a mobileapplication used to capture the video payload.

In some embodiments, the method may include using the publicationidentifier, identifying a moderation control for a publication entity,and to selectively presenting the concatenated video to the publicationentity for approval based on the moderation control.

In some embodiments, the method may include receiving an approval forpublication of the concatenated video from the publication entity, andtransmitting the concatenated video to the third-party video serviceresponsive to the receipt of the approval.

In some embodiments, the method may include receiving a rejection of theconcatenated video from the publication entity, and selectively nottransmitting the concatenated video to the third-party serviceresponsive to receipt of the receipt of the rejection.

BRIEF DESCRIPTION OF THE DRAWINGS

To easily identify the discussion of any particular element or act, themost significant digit or digits in a reference number refer to thefigure number in which that element is first introduced.

FIG. 1 is a block diagram illustrating a networked video concatenationsystem, according to some example embodiments.

FIG. 2 is a schematic diagram, illustrating further connections,interactions and communications between the various systems andcomponents illustrated in FIG. 1.

FIG. 3 is a block diagram showing architectural details of a videodistribution server, according to some example embodiments.

FIG. 4 is a block diagram showing for the architectural details of avideo distribution server 120, according to some example embodiments.

FIG. 5 is diagrammatic representation of an upload file, according tosome example embodiments, that is uploaded from a mobile device toapplication servers for processing and concatenation.

FIGS. 6A-6C are a flow diagrams illustrating a number of core operationsthat may be performed within the context of the SaaS networkarchitecture, according to some example embodiments.

FIG. 7 is a flowchart illustrating a method, according to some exampleembodiments, to upload video bumpers from a web interface to servers.

FIG. 8 is a flowchart illustrating a method, according to an exampleembodiments, to upload user generated content (UGC) (e.g., capturedvideo from a mobile device) to servers, and to concatenate the capturedvideo with bumper videos.

FIG. 9 is a flowchart illustrating a method, according to an exampleembodiments, to enable curation of distribution of concatenated videosto third-party servers

FIG. 10 illustrates a routine in accordance with one embodiment.

FIG. 11 illustrates a routine in accordance with one embodiment.

FIG. 12 is a user interface diagram showing a user interface flow,according to some example embodiments, displayed on a mobile deviceduring a video capture and upload process.

FIG. 13 is a front view of a mobile device presenting a video captureinterface of a hosted video capture application, according to someexample embodiments.

FIG. 14 is a front view of a mobile device presenting a metadata inputinterface of a hosted video capture application, according to someexample embodiments.

FIG. 15 is a front view of a mobile device presenting a video uploadconfirmation interface of a hosted video capture application, accordingto some example embodiments.

FIG. 16 is a user interface diagram showing a sign-in user interface,according to some example embodiments.

FIG. 17 is a user interface diagram illustrating a dashboard userinterface, according to some example embodiments.

FIG. 18 is a user interface diagram illustrating an account userinterface, according to some example embodiments.

FIG. 19 is a user interface diagram illustrating a billing userinterface, according to some example embodiments.

FIG. 20 is a user interface diagram illustrating a new show userinterface, according to some example embodiments.

FIG. 21 is a user interface diagram illustrating a settings userinterface, according to some example embodiments.

FIG. 22 is a user interface diagram showing a content user interface,according to some example embodiments.

FIG. 23 is a user interface diagram showing a user management interface,according to some example embodiments.

FIG. 24 is a user interface diagram showing a user invite interface,according to some example embodiments . . . .

FIG. 25 is a user interface diagram showing a syndication userinterface, according to some example embodiments.

FIG. 26 is a user interface diagram showing a syndication userinterface, according to some example embodiments.

FIG. 27 is a user interface diagram showing an analytics user interface,according to some example embodiments.

FIGS. 28A and 28B are user interface sequence diagrams illustrating asign-in user interface sequence 2800 which includes a sign-up userinterface 2802, a sign-in email user interface 2804, a sign-in passworduser interface 2806, and a settings user interface 2808

FIG. 29 illustrates an aspect of the subject matter in accordance withone embodiment.

FIG. 30 is a data structure diagram, illustrating a campaign datastructure, according to certain example embodiments.

FIG. 31 is a data diagram illustrating further details a campaign datastructure, according to certain example embodiments

FIG. 32 is a flowchart illustrating a method of publishing a campaign ofuser generated content (UGC), according to the roles and datastructures.

FIG. 33 is a block diagram illustrating a representative softwarearchitecture software architecture, which may be used in conjunctionwith various hardware architectures herein described.

FIG. 34 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.

DETAILED DESCRIPTION Glossary

“CARRIER SIGNAL” in this context refers to any intangible medium that iscapable of storing, encoding, or carrying instructions for execution bythe machine, and includes digital or analog communications signals orother intangible medium to facilitate communication of suchinstructions. Instructions may be transmitted or received over thenetwork using a transmission medium via a network interface device andusing any one of a number of well-known transfer protocols.

“CLIENT DEVICE” in this context refers to any machine that interfaces toa communications network to obtain resources from one or more serversystems or other client devices. A client device may be, but is notlimited to, a mobile phone, desktop computer, laptop, portable digitalassistants (PDAs), smart phones, tablets, ultra books, netbooks,laptops, multi-processor systems, microprocessor-based or programmableconsumer electronics, game consoles, set-top boxes, or any othercommunication device that a user may use to access a network.

“COMMUNICATIONS NETWORK” in this context refers to one or more portionsof a network that may be an ad hoc network, an intranet, an extranet, avirtual private network (VPN), a local area network (LAN), a wirelessLAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), ametropolitan area network (MAN), the Internet, a portion of theInternet, a portion of the Public Switched Telephone Network (PSTN), aplain old telephone service (POTS) network, a cellular telephonenetwork, a wireless network, a Wi-Fi® network, another type of network,or a combination of two or more such networks. For example, a network ora portion of a network may include a wireless or cellular network andthe coupling may be a Code Division Multiple Access (CDMA) connection, aGlobal System for Mobile communications (GSM) connection, or other typeof cellular or wireless coupling. In this example, the coupling mayimplement any of a variety of types of data transfer technology, such asSingle Carrier Radio Transmission Technology (1×RTT), Evolution-DataOptimized (EVDO) technology, General Packet Radio Service (GPRS)technology, Enhanced Data rates for GSM Evolution (EDGE) technology,third Generation Partnership Project (3GPP) including 3G, fourthgeneration wireless (4G) networks, Universal Mobile TelecommunicationsSystem (UMTS), High Speed Packet Access (HSPA), WorldwideInteroperability for Microwave Access (WiMAX), Long Term Evolution (LTE)standard, others defined by various standard setting organizations,other long range protocols, or other data transfer technology.

“COMPONENT” in this context refers to a device, physical entity or logichaving boundaries defined by function or subroutine calls, branchpoints, application program interfaces (APIs), or other technologiesthat provide for the partitioning or modularization of particularprocessing or control functions. Components may be combined via theirinterfaces with other components to carry out a machine process. Acomponent may be a packaged functional hardware unit designed for usewith other components and a part of a program that usually performs aparticular function of related functions. Components may constituteeither software components (e.g., code embodied on a machine-readablemedium) or hardware components. A “hardware component” is a tangibleunit capable of performing certain operations and may be configured orarranged in a certain physical manner. In various example embodiments,one or more computer systems (e.g., a standalone computer system, aclient computer system, or a server computer system) or one or morehardware components of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware component that operates to performcertain operations as described herein. A hardware component may also beimplemented mechanically, electronically, or any suitable combinationthereof. For example, a hardware component may include dedicatedcircuitry or logic that is permanently configured to perform certainoperations. A hardware component may be a special-purpose processor,such as a Field-Programmable Gate Array (FPGA) or an ApplicationSpecific Integrated Circuit (ASIC). A hardware component may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwarecomponent may include software executed by a general-purpose processoror other programmable processor. Once configured by such software,hardware components become specific machines (or specific components ofa machine) uniquely tailored to perform the configured functions and areno longer general-purpose processors. It will be appreciated that thedecision to implement a hardware component mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations. Accordingly, the phrase “hardware component” (or“hardware-implemented component”) should be understood to encompass atangible entity, be that an entity that is physically constructed,permanently configured (e.g., hardwired), or temporarily configured(e.g., programmed) to operate in a certain manner or to perform certainoperations described herein. Considering embodiments in which hardwarecomponents are temporarily configured (e.g., programmed), each of thehardware components need not be configured or instantiated at any oneinstance in time. For example, where a hardware component comprises ageneral-purpose processor configured by software to become aspecial-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware components) at different times. Softwareaccordingly configures a particular processor or processors, forexample, to constitute a particular hardware component at one instanceof time and to constitute a different hardware component at a differentinstance of time. Hardware components can provide information to, andreceive information from, other hardware components. Accordingly, thedescribed hardware components may be regarded as being communicativelycoupled. Where multiple hardware components exist contemporaneously,communications may be achieved through signal transmission (e.g., overappropriate circuits and buses) between or among two or more of thehardware components. In embodiments in which multiple hardwarecomponents are configured or instantiated at different times,communications between such hardware components may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware components have access. Forexample, one hardware component may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware component may then, at alater time, access the memory device to retrieve and process the storedoutput. Hardware components may also initiate communications with inputor output devices, and can operate on a resource (e.g., a collection ofinformation). The various operations of example methods described hereinmay be performed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implementedcomponents that operate to perform one or more operations or functionsdescribed herein. As used herein, “processor-implemented component”refers to a hardware component implemented using one or more processors.Similarly, the methods described herein may be at least partiallyprocessor-implemented, with a particular processor or processors beingan example of hardware. For example, at least some of the operations ofa method may be performed by one or more processors orprocessor-implemented components. Moreover, the one or more processorsmay also operate to support performance of the relevant operations in a“cloud computing” environment or as a “software as a service” (SaaS).For example, at least some of the operations may be performed by a groupof computers (as examples of machines including processors), with theseoperations being accessible via a network (e.g., the Internet) and viaone or more appropriate interfaces (e.g., an Application ProgramInterface (API)). The performance of certain of the operations may bedistributed among the processors, not only residing within a singlemachine, but deployed across a number of machines. In some exampleembodiments, the processors or processor-implemented components may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the processors or processor-implemented components may bedistributed across a number of geographic locations.

“MACHINE-READABLE MEDIUM” in this context refers to a component, deviceor other tangible media able to store instructions and data temporarilyor permanently and may include, but is not be limited to, random-accessmemory (RAM), read-only memory (ROM), buffer memory, flash memory,optical media, magnetic media, cache memory, other types of storage(e.g., Erasable Programmable Read-Only Memory (EEPROM)) and/or anysuitable combination thereof. The term “machine-readable medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized or distributed database, or associated caches and servers)able to store instructions. The term “machine-readable medium” shallalso be taken to include any medium, or combination of multiple media,that is capable of storing instructions (e.g., code) for execution by amachine, such that the instructions, when executed by one or moreprocessors of the machine, cause the machine to perform any one or moreof the methodologies described herein. Accordingly, a “machine-readablemedium” refers to a single storage apparatus or device, as well as“cloud-based” storage systems or storage networks that include multiplestorage apparatus or devices. The term “machine-readable medium”excludes signals per se.

“PROCESSOR” in this context refers to any circuit or virtual circuit (aphysical circuit emulated by logic executing on an actual processor)that manipulates data values according to control signals (e.g.,“commands”, “op codes”, “machine code”, etc.) and which producescorresponding output signals that are applied to operate a machine. Aprocessor may, for example, be a Central Processing Unit (CPU), aReduced Instruction Set Computing (RISC) processor, a ComplexInstruction Set Computing (CISC) processor, a Graphics Processing Unit(GPU), a Digital Signal Processor (DSP), an Application SpecificIntegrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC)or any combination thereof. A processor may further be a multi-coreprocessor having two or more independent processors (sometimes referredto as “cores”) that may execute instructions contemporaneously.

Description

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent files or records, but otherwise reserves all copyrightrights whatsoever. The following notice applies to the software and dataas described below and in the drawings that form a part of thisdocument: Copyright 2017, LUMANARY INC., All Rights Reserved.

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the disclosure. In the followingdescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide an understanding of variousembodiments of the inventive subject matter. It will be evident,however, to those skilled in the art, that embodiments of the inventivesubject matter may be practiced without these specific details. Ingeneral, well-known instruction instances, protocols, structures, andtechniques are not necessarily shown in detail.

Drawings

With reference to FIG. 1, an example embodiment of a high-level SaaSnetwork architecture 100 is shown. A video processing system 110provides server-side functionality via a network 108 (e.g., the Internetor wide area network (WAN)) to a client device 102. A programmaticclient, in the example form of a video capture application 104 arehosted and execute on the client device 102. The video processing system110 includes application servers 116, which in turn include anadministrative server 118, a video distribution server 120, a videoencoding server 122 and a video concatenation server 124, whichcollectively provide a number of functions and services to the videocapture application 104 and the web browser 106 that accesses the videoprocessing system 110. The video capture application 104 also provides anumber of interfaces described herein, which present output of thetracking and analysis operations to a user of the client device 102.

The client device 102 enables a user to access and interact with thevideo processing system 110. For instance, the user provides input(e.g., touch screen input or alphanumeric input) to the client device102, and the input is communicated to the video processing system 110via the network 108. In this instance, the video processing system 110,in response to receiving the input from the user, communicatesinformation back to the client device 102 via the network 108 to bepresented to the user.

Application Program Interface (API) servers 112 and web servers 114 arecoupled to, and provide programmatic and web interfaces respectively, toapplication servers 116. The application servers 116 are, in turn, shownto be coupled to a database server 126 that facilitates access toinformation storage repositories (e.g., a database 128). In an exampleembodiment, the database 128 includes storage devices that storeinformation accessed and generated by the application servers 116.

Additionally, a third party application 132, executing on a third partyserver 130, is shown as having programmatic access to the videoprocessing system 110 via the programmatic interface provided by theApplication Program Interface (API) servers 112. For example, the thirdparty application 132, using information retrieved from the videoprocessing system 110, may support one or more features or functions ona website hosted by the third party.

Turning now specifically to the applications hosted by the client device102, the web browser 106 may access the various systems (e.g., theadministrative server 118, the video distribution server 120 the videoencoding server 122 or the video concatenation server 124) via the webinterface supported by the web servers 114. Similarly, the video captureapplication 104 (e.g., an “app”) accesses the various services andfunctions provided by the application servers application servers 116via the programmatic interface provided by the Application ProgramInterface (API) servers 112. The video capture application 104 may, forexample, be an “app” executing on a client device 102. The video captureapplication 104 may, for example, be an iOS or Android OS applicationand enables user to access and input data on the video processing system110 in an off-line manner, and performs batch-mode communications withthe networked system video processing system 110.

Further, while the SaaS network architecture 100 shown in FIG. 1 employsa client-server architecture, the present inventive subject matter is ofcourse not limited to such an architecture, and could equally well findapplication in a distributed, or peer-to-peer, architecture system, forexample. The components of the application servers 116 could also beimplemented as a standalone software program, which do not necessarilyhave networking capabilities.

FIG. 2 is a schematic diagram, illustrating further connections,interactions and communications between the various systems andcomponents illustrated in FIG. 1.

A client device 102, in the example form of a mobile device 202, isshown to be communicatively coupled to the video distribution server120, so as to enable of the upload of content files (e.g., UGC in theform pf video files captured by the mobile device 202 using the videocapture application 104) to the video distribution server 120. Themobile device 202 is also coupled to the administrative server 118, soas to enable a user of the mobile device 202 to perform variousadministrative functions with respect to a user account maintained bythe administrative server 118. Such illustrative functions may beperformed either using a dedicated administrative interface of the videocapture application 104, or a web-based administrative interfaceprovided by the administrative server 118 and accessed by the webbrowser 106.

A further client device 102, in the example form of a computer system204, is also shown to be communicatively coupled to both the videodistribution server 120 and to the administrative server 118. As withthe mobile device 202, the computer system 204 uploads content files(e.g., bumper videos, such as intro and outro videos or video capturedusing a camera device of the computer system 204) to the videodistribution server 120 processing and further distribution. Thecomputer system 204, via a browser application, is also able to accessvarious administrative functions via the web-based administrativeinterface provided by the administrative server 118.

The video distribution server 120 operates to receive and distributecontent (e.g., bumper videos and captured video) to the video encodingserver 122, the video concatenation server 124, and various third-partyparty servers 130 of content distribution networks, such as YouTube 206,Vimeo 208, Facebook 210, Twitter 212 and podcast distribution service214.

The video encoding server 122 operates to encode the video contentreceived from the video distribution server 120, while the videoconcatenation server 124 operatively concatenates video content receivedfrom the video distribution server 120 and/or the video encoding server122. Specifically, the video concatenation server 124 may concatenatespecific bumper videos with specific captured video to generateconcatenated videos.

FIG. 3 is a block diagram showing further architectural details of anadministrative server 118, according to some example embodiments.

The administrative server 118 is shown to include an interface component304 by which the administrative server 118 communicates (e.g., over thenetwork 108) with other servers of the application servers 116 and othersystems within the SaaS network architecture 100.

The interface component 304 is collectively coupled to a settingscomponent 306 that operates to generate a settings user interface 1900,shown in FIG. 21, to receive various settings information from a userfor a video “show” or channel for a particular user or entity (e.g.,corporation).

A content component 308 operates to generate a content user interface2200, as shown in FIG. 22, to receive content uploads (e.g., uploadfiles, such as the upload file 500 is shown in FIG. 5), and to managethe moderation, queuing and publication of content (e.g., concatenatedvideos).

A user management component 310 operates to generate a user managementinterface 2300, as shown in FIG. 23, to facilitate the management of theusers for a particular video show or campaign, including the invitationof new users (e.g., as shown by user invitation interface 2400 shown inFIG. 24), and the assignment of administrative roles. The usermanagement component 310 also presents information regarding useractivity (e.g., approval rates and upload amount (e.g., expressed incontent playback minutes) and user impact (e.g., expressed in number ofimpressions generated by content attributed to each of a number ofusers)).

A syndication component 312 operates to generate a syndication userinterface 2500, as shown in FIG. 25, which conveniently allows anadministrative user to manage the syndication of content for aparticular video show. To this end, the syndication user interface 2500may display a number of linked accounts (e.g., to various videosyndication or hosting services) and linked feeds (e.g., to videodistribution services). The syndication component 312 may also prompt auser for posting schedule information, for example allowing anadministrative user to designate certain content to be posted and golive immediately after a server processes files uploaded by a particularuser. The syndication component 312 may also enable a user toautomatically allocate video content to various queues (or buffers) forpublication on specific dates and times (see FIG. 26).

An analytics component 314 operates to generate an analytics interface2500, as shown in FIG. 27, which presents analytics (e.g., status,duration, impressions, charge) regarding multiple content uploads, andenables the user to perform searches on content based on any one of anumber of attributes (e.g., title, status, date, user, duration and/orimpressions).

FIG. 4 is a block diagram showing for the architectural details of avideo distribution server 120, according to some example embodiments.

The video distribution server 120 is shown to include an interfacecomponent 404 by which the video distribution server 120 communicates(e.g., over the network 108) with other e application servers 116 andother systems within the SaaS network architecture 100.

The interface component 404 is communicatively coupled to an entityidentification component 406 that operates to identify an entity (e.g.,user or corporate entity) associated with particular content (e.g., abumper video or uploaded video content). To this end, the entityidentification component 406 examines the headers of packets of networktraffic received at the video distribution server 120 from the clientdevice 102 in order to identify either the video capture application 104(e.g., as being branded or associated with particular entity) or a userof the client device 102. This identification information may then beincluded in metadata associated with the content.

A routing/syndication component 408 is likewise communicatively coupledto both the interface component 404 and the entity identificationcomponent 406, and operates to route received content to a destination.In one example, the routing/syndication component 408 may route a bumpervideo or a captured video to a user-specified video concatenation server124, for example, for concatenation services and processing.

The routing/syndication component 408 may also distribute concatenatedcontent, received from a video concatenation server 124 to a third partyserver 130 (e.g., Vimeo, YouTube et cetera).

FIG. 5 is diagrammatic representation of an upload file 500, accordingto some example embodiments that is uploaded from a mobile device toapplication servers 116 for processing and concatenation.

The upload file 500 includes a payload in the form of video data 502, aswell as associated metadata 504. The video data 502 may be a videocaptured by the video capture application 104 operating on the mobiledevice 202. In other embodiments, the payload may be image data or audiodata, or a collection of audio, video and image data.

The metadata 504 includes:

-   -   An application identifier 506, identifying an application (e.g.        the video capture application) used to generate the video data        502. In one example embodiment, the video capture application        may be a specifically branded application, or may be associated        with a specific entity (e.g., a particular company or        organization) so that content captured using the application is        automatically associated with a particular video show or        campaign managed by a video distribution server 120. For        example, a consumer company such as Coca-Cola may distribute a        particular version of a video capture application that is        branded as a COKE application. In this case, the application        identifier 506 may be used to identify the application used to        capture the video data 502 as being at the COKE application.    -   An entity identifier 508, identifying a particular user of a        mobile device that was used to generate the video data 502. The        entity identifier 508 may anonymously identify a particular        user, or may be associated with a user for which a record is        managed by the user management component 310.    -   A title 510 is typically a textual title provided by a user for        the video represented by the video data 502.    -   A description 512 is a textual description provided by the user        for the video represented by the video data 502.    -   Tags 514 are textual (or other) tag attributed to the video data        502 by a user.    -   Thumbnail image 516 is a thumbnail image selected by the user to        represent to the video data 502, and to be presented as an        identifier.    -   Geolocation data 518 is geolocation data captured by a mobile        device at time of the generation of the video data 502, and        associated with the video data 502.

FIGS. 6A-6C are flow diagrams illustrating a number of core operationsthat may be performed within the context of the SaaS networkarchitecture 100, according to some example embodiments.

The core operations include system setup operations 602, performed bythe administrative server 118. The setup operations include the setup ofcertain authentication and billing information, the setup of certainvideo naming basics as well as default URLs for video access, theestablishment of certain content defaults (e.g., bumper videos,watermarked logos, thumbnail images, title, description, tags etc.), andmobile application configuration (e.g., icons, default colors andlogos).

Capture source operations 604 include all operations needed to create asingle show or campaign, with the ability to add additional shows,campaigns and uses. Specifically, capture source operations 604 includethe capture of video content, a video title, video description, optionaltags, a thumbnail image to be associated with the video, and a videocapture location.

Following performance of the capture source operations 604, the relevantdata and metadata are uploaded to a cloud server (e.g., hosting theapplication servers), where content processing operations 606 areperformed. In one example embodiment, these content processingoperations 606 are performed by the video encoding server 122. Examplecontent processing operations 606 include setting up video resolutionand dimensions, adding watermark logos to the video content, normalizingaudio data associated with the video content, concatenating the capturedvideo with bumper videos, audio data extraction, and attaching metadatato the processed audio and/or video files. The processed video and/oraudio files are then added to S3 buckets, and the appropriate XML/JSONdata is updated.

Moderation/scheduling operations 608 are performed by a user, using aweb interface or the video capture application. Themoderation/scheduling operations 608 are role-based. To this end, theadministrative server 118 supports various role types and definitions,including the following user types: owner, administrator, moderator, andpublisher, each with appropriate access, editing and publicationpermissions.

The moderation/scheduling operations 608 also include a number ofcontent approval operations, namely:

-   -   auto-post immediately: on/off    -   preapproved user posting (no moderation required)    -   moderated “publish now” option    -   moderated “add to queue” option    -   adjust queue position    -   reject submission with comments    -   set posting queues schedule to specific date/time.

Data generated by the moderation/scheduling operations 608 is alsouploaded to the administrative server 118 (e.g., which may beimplemented as a cloud server).

Content syndication operations 610 include posting native video to anyone of a number of services or content distribution platforms (e.g.,YouTube, Facebook or Vimeo); posting native audio to any one of a numberof services (e.g., SoundCloud); and/or posting social links to eitheraudio or video content to any one of a number of social publicationservices (e.g., Twitter, Google+ or Tumblr).

Upload and impression data may be communicated from the contentsyndication operations 610 to the administrative server 118 to enablethis server to perform tracking/billing operations 612. Specifically,the tracking/billing operations 612 include data monitoring operationsto track uploaded minutes of content (e.g., uploaded minutes of contentcaptured and generated at the capture source operations 604). as well asthe monitoring of social networks (and S3 buckets) in order to collectdata indicative of a number/rate of impressions for audio and videocontent from any one of the number of syndication services. For example,data monitoring may be used to track the number of impressions for aparticular video uploaded to YouTube. The tracking/billing operations612 also include billing operations whereby an account user is chargedat predetermined intervals (e.g. 30 days), based on a static value(e.g., a minimum uploaded amount of content, measured in minutes), and adynamic value (e.g., a rolling 30 day impression count for totaluploaded content).

FIG. 7 is a flowchart illustrating a method 700, according to someexample embodiments, to upload video bumpers from a web interface to theapplication servers 116.

Active components for the example method 700 include a computer system702, a mobile device 704 and the application servers 116. In otherexample scenarios, different active components could perform thediscussed operations of method 700.

The method 700 commences with operation 706, performed at the computersystem 702, during which bumper videos in the form of an introductionvideo (intro video) and ending video (outro video) are uploaded from thecomputer system 702 to the application servers 116, and specifically thevideo distribution server 120. The bumper videos are then routed, fromthe video distribution server 120, to an appropriate video concatenationserver 124. To this end, the computer system 702 present an webinterface (e.g., the settings user interface 2100 of FIG. 21) to a userthat allows the user to select the bumper videos to be uploaded, as wellas to select a destination video concatenation server 124 to which thebumper videos are to be supplied.

At the video concatenation server 124, the bumper videos may then bestored in associated database (e.g., the database 128). The bumpervideos have associated metadata including an entity identifier 508 for aparticular entity (e.g., a user or corporate entity that uploaded thebumper videos from the computer system 702). The entity identifier 508is used, as described in further detail with respect to FIG. 5, toidentify content with which the bumper videos are to be concatenated.

At operation 708, a logo watermark may also be uploaded via the settingsuser interface 2100 to the application servers 116, and specifically tothe video distribution server 124 for distribution to an appropriatevideo encoding server 122. As with the bumper videos, the logo watermarkis associated with specific metadata that includes an entity identifier508 for a particular entity, which is used to identify to which contentthe logo watermark is to be applied.

At operation 710, a user, again using the settings user interface 2100,may set a moderation control to ON or OFF. Specifically, the setting ofthe moderation control determines whether content for a particular videoshow or campaign is subject to moderation or not. From operation 710,the method 700 proceeds to transition circle A 714.

FIG. 8 is a flowchart illustrating a method 800, according to an exampleembodiments, to upload captured video from a mobile device to servers,and to concatenate the captured video with bumper videos.

The method 800 commences at block 802, what is the user authenticatingaccess to an application in the example form of the video captureapplication 104 hosted on the mobile device 704. At block 804, using thevideo capture application 104, the user captures video using the camerasystem of the mobile device 704. An example interface item 1300 that ispresented by the video capture application 104 to facilitate this avideo capture operation is shown in FIG. 13.

At block 806, video metadata (e.g., metadata 504) is received from theuser by the video capture application 104. An example interface 1400that is presented by the video capture application 104 in order tofacilitate the input of the video metadata is shown in FIG. 14.Specifically, using the interface 1400, a user may add an image (e.g.thumbnail) to represent the captured video, provide a title, tags anddescription regarding the video.

At block 808, the captured video and its associated video metadata isuploaded from the video capture application 104 on the mobile device704, to the application servers 116, which receive the captured videoand metadata at block 810. Specifically, the video and metadata areuploaded to and received by, as shown in FIG. 2, the video distributionserver 120. The captured video and metadata are then distributed fromthe video distribution server 122, the video encoding server 122 and thevideo concatenation server 124.

At block 812, the video concatenation server 124 retrieves the intro andoutro bumper videos (e.g., from a database associated with theadministrative server 118 or from a database directly associated withthe video concatenation server 124124). At block 814, the videoconcatenation server 124 proceeds to concatenate to the captured videowith the retrieved bumper videos to generate a concatenated video. Also,at block 814, the video encoding server 122 applies digital watermarkingto the captured video or the concatenated video. To this end, the videoencoding server 122 may retrieve digital watermarking imagery andinformation from the administrative server 118, or may use metadataassociated with the captured video to identify and retrieve locallystored digital watermarking imagery.

At block 818, the application servers 116 (e.g., the video encodingserver 122 and/or the video concatenation server 124) embed the metadatainto the concatenated video.

At decision block 816, the application servers 166 determine whethermoderation controls are applicable (e.g., “on”) with respect to theconcatenated video. This determination is made by the administrativeserver 118 from administrative data applicable to the concatenated video(e.g., administrative data associated with a particular entity (e.g.,corporation or user) associated with the video capture application 104).Take the example of a corporation, such as the Coca-Cola Corporation,which may release a branded version of the video capture application104. In this case, the administrative server 118 may determine that theconcatenated video was generated by a “Coca-Cola” version of the videocapture application 104, and accordingly access administrativeinformation of the Coca-Cola Corporation maintained by theadministrative server 118 in order to determine whether communicationcontrols are applicable to a specific instance of the concatenatedvideo. Following a positive determination at decision block 816, themethod 800 progresses to block B 820. On the other hand, if moderationcontrols are not applicable to the concatenated video, the method 800progresses to block C 822.

FIG. 9 is a flowchart illustrating a method 900, according to an exampleembodiments, to enable curation of distribution of concatenated videosto third-party servers.

The method 900 proceeds from B 820 to block 902, with the applicationservers 116, and specifically the administrative server 118, sending anotice to an administrative user requesting approval for thedistribution and publication of a specific concatenated video tothird-party services (e.g., Facebook, YouTube, Twitter etc.). In oneembodiment, this notice is sent to the video capture application 104executing on the mobile device 704 of an administrative user and ispresented at block 904 on an administrative approval interface. Inanother embodiment, this notice is presented via a web interface andpresented on an administrative approval interface of a web applicationor website accessed via the computer system 702.

Following presentation of a request for distribution and/or publicationof the concatenated video within the context of the administrativeapproval interface at block 904, a determination is made at decisionblock 906 whether the administrative user has approved the distributionand/or publication of the concatenated video. Following a positivedetermination, the method 900 progresses to block 912, where theconcatenated video is distributed and uploaded from the videodistribution server 120 to third-party video services. Note that whereadministrative approval is not needed for publication and/ordistribution of the concatenated video, the method 900 progressesdirectly from C 822 to block 912.

At block 914, the video encoding server 122 monitors third-partyencoding processes by any one or more of the third-party services. Upondetecting that encoding is completed at block 916, the video encodingserver 122 sends a notification to the uploading user (and alsooptionally the administrative user) indicating that encoding has beencompleted. This coding completion notification is presented to theuploading user (and/or the administrative user) at block 918 (e.g., viaan interface on the mobile device 704 or the computer system 702), atwhich point the method 900 terminates.

Returning to decision block 906, in the event that the administrativeuser does not approve the concatenated a video for distribution and/orpublication, an administrative approval interface prompts theadministrative user for additional comments and explanation, at block908, as to reasons for the lack of approval. Having then received suchadditional comments or explanation from the administrative user, atblock 910, the computer system 702 or mobile device 704 sends a declinepush notification to the uploading user that includes the administrativeuser's comments or explanation. At block 918, this decline pushnotification is presented to the uploading user.

In block 1002, routine 1000 receives an upload file. In block 1004,routine 1000, using the publication identifier, identifies a bumpervideo segment and retrieves the bumper video segment from a storagedevice. In block 1006, routine 1000 concatenates the video payload withthe bumper video segment to create a concatenated video. In block 1008,routine 1000, using the publication identifier, identifies at least onethird-party video service to which to publish the concatenated video. Inblock 1010, routine 1000 transmits the concatenated video, together withpublication credentials, to the third-party video service. In done block1012, routine 1000 ends.

In block 1102, routine 1100 receives an upload file. In block 1104,routine 1100, using the publication identifier, identifies a bumpervideo segment and retrieves the bumper video segment from a storagedevice. In block 1106, routine 1100 concatenates the video payload withthe bumper video segment to create a concatenated video. In block 1108,routine 1100, using the publication identifier, identifies at least onethird-party video service to which to publish the concatenated video. Inblock 1110, routine 1100 transmits the concatenated video, together withpublication credentials, to the third-party video service. In block1112, routine 1100 using the publication identifier, identifies anintroduction bumper video segment and an ending bumper video segment,and retrieves both the introduction and ending video buffer segmentsfrom the storage device. In block 1114, routine 1100 concatenates thevideo payload with the introduction bumper video segment so that theintroduction bumper video segment precedes the video payload in theconcatenated video, and concatenates the video payload with the endingbumper video segment so that the ending bumper video segment proceedsthe video payload in the concatenated video. In done block 1116, routine1100 ends.

FIG. 12 is a user interface diagram showing a user interface flow 1200,according to some example embodiments, displayed on a mobile deviceduring a video capture and upload process.

As shown, the user is presented with the option of selecting a capturedvideo to upload, and also inputting metadata 504 to be associated withthe video (e.g., title 510, tags 514, description 512 and a thumbnailimage 516).

FIG. 13 is a front view of a mobile device presenting a video captureinterface of a hosted video capture application 104, according to someexample embodiments.

FIG. 14 is a front view of a mobile device presenting a metadata inputinterface of a video capture application 104, according to some exampleembodiments.

FIG. 15 is a front view of a mobile device presenting a video uploadconfirmation interface of a hosted video capture application, accordingto some example embodiments.

FIG. 16 is a user interface diagram showing a sign-in user interface1600, according to some example embodiments.

FIG. 17 is a user interface diagram illustrating a dashboard userinterface 1700, according to some example embodiments.

FIG. 18 is a user interface diagram illustrating an account userinterface 1800, according to some example embodiments.

FIG. 19 is a user interface diagram illustrating a billing userinterface 1900, according to some example embodiments.

FIG. 20 is a user interface diagram illustrating a new show userinterface 2000, according to some example embodiments.

FIG. 21 is a user interface diagram illustrating a settings userinterface 2100, according to some example embodiments.

FIG. 22 is a user interface diagram showing a content user interface2200, according to some example embodiments.

FIG. 23 is a user interface diagram showing a user management interface2300, according to some example embodiments.

FIG. 24 is a user interface diagram showing a user invitation interface2400, according to some example embodiments . . . .

FIG. 25 is a user interface diagram showing a syndication user interface2500, according to some example embodiments.

FIG. 26 is a user interface diagram showing a further view of thesyndication user interface 2500, according to some example embodiments.

FIG. 27 is a user interface diagram showing an analytics user interface2700, according to some example embodiments.

FIGS. 28A and 28B are user interface sequence diagrams illustrating asign-in user interface sequence 2800 which includes a sign-up userinterface 2802, a sign-in email user interface 2804, a sign-in passworduser interface 2806, and a settings user interface 2808.

FIG. 29 is a user interface sequence diagram illustrating moderationinterface sequence 2900 which includes a video pending user interface2902, a video approved user interface 2904, and a video rejected userinterface 2906.

FIG. 30 is a data structure diagram, illustrating a campaign datastructure 3000, according to certain example embodiments. The campaign adata structure 3000, when considered hierarchically, includes at leastone owner data record 3002, representing an owner of the campaign. Forexample, Major League Baseball (MLB) may act as a campaign owner of anMLB campaign to distribute User Generator Counted (UGC) that generatedby various entities associated with the MLB (e.g., fans, teams, youthcamps, etc.).

A number of brand administrators, each represented by a respective brandadministrator record 3020, 3006 and 3008) are associated with aparticular owner. Continuing the MLB example, each participating teamwithin the MLB campaign may have a brand administrator for thatparticular team (e.g., a brand administrator may be associated with theSan Francisco Giants baseball team, the St. Louis Cardinals baseballbeam, and the Oakland A's baseball team).

Each the brand administrator may operate a number of the contentcampaigns (e.g., represented by campaign data 3004, 3012 and 3014). Asshown in FIG. 30, the campaign data 3004 may include data for a teamcampaign 3010, a fan campaign 3016, and a youth camp campaign 3018).

FIG. 31 is a data diagram illustrating further details a campaign datastructure 3100, according to certain example embodiments. In particular,FIG. 31 provides further details regarding the contents of campaign data3004. A particular campaign includes a moderator 3102, as well as anumber of publishers at 3104-3110. Accordingly, taking a global view ofthe campaign that data structure 3100, four types of uses arerepresented, namely an owner, a brand administrator, a moderator and apublisher. The owner that may be responsible for the payment of all feesand expenses associated with a particular account.

A moderator 3102 is responsible for acting as a “gateway” or approver ofcontent (e.g., video content 3112 had to be published to one or morecampaign networks 3114 and publishing networks, such as Facebook,Twitter, and YouTube etc.). Further, a single campaign 3004 may havemultiple moderators.

Continuing the example discussed with reference to FIG. 30, and assumingthe MLB as an owner, each of the San Francisco, St. Louis Cardinals andOakland A's baseball teams may have been associated moderator that canset up brand defaults. For example, the San Francisco Giants moderatormay wish to control a watermarking of content distributed within thecontext of a campaign, or any one of a number of brand defaults.Further, a campaign moderator may have access certain data and analyticsregarding a particular campaign.

The publishers 3104-3110 may also fall into several categories (e.g.,team players, fans, or youth camp attendees), and publish to anappropriate campaign. For example, with reference to FIG. 31, each ofthe publishers 3104-3110 may be a fan and be participating within a fancampaign 3016.

FIG. 32 is a flowchart illustrating a method 3200 of publishing acampaign of user generated content (UGC), according to the roles anddata structures described above with reference to FIGS. 30 and 31.

The method 3200 commences at operation 3202, with the owner and/oradministrator setting up a particular campaign, and also specifyingwhether the owner will be responsible for costs and fees of thecampaign, or alternatively whether payment for various campaigns will bethe responsibility of one or more brand administrators.

At operation 3204, a publisher (e.g., a baseball fan) downloads apublishing application (e.g., the video capture application 104) to hisor her mobile device. The downloaded publishing application may be anative to an application vendor (e.g., Congo.io), or may be a brandedapplication developed using a software development kit (SDK provided byCongo.io) by a particular owner and/or brand administrator (e.g., abranded application had developed using an SDK by the San FranciscoGiants).

At operation 3206, having downloaded the relevant publishingapplication, an account for the publisher is approved (e.g., using theuser management component 310 of the administrative server 1180).

At operation 3204, the publisher then publishes video content 3112 tothe video distribution server 120. This content may be captured inreal-time using the user's mobile device, or may alternatively bepreviously captured and stored video content.

At operation 3210, the video content is received by the applicationservers 116, and more specifically, the video distribution server 120.The video content is then subject to the encoding and concatenationoperations as described above. Thereafter, at operation 3212, the videocontent is added to a moderation queue, for moderation according to apublication schedule, moderation by a user (e.g., the moderator 3102),or moderation according to individual content characteristics.

At operation 3214, the moderation operations may be supplemented by anartificial intelligence (AI) component of the administrative server 118.The AI component provides publication approval recommendations to ahuman moderator based on various factors, such as the demographicdetails of the publishing user, the quality or length of the video,stability of the video and other discernible characteristics or metadataof the video.

At operation 3216, the video content is then shared natively acrossmultiple networks, such as the campaign networks 3114 and the publishernetworks 3116.

At operation 3218, a rewards engine, being part of the administrativeserver 118, access certain thresholds with respect to the publishedvideo content (e.g., number of views), and provide appropriate rewardsto a specific publisher. For example, if a particular fan in the role ofa publisher, publishes a video that receives a certain threshold numberof views, the rewards engine may provide a monetary payment to the fan.

FIG. 33 is a block diagram illustrating an example software architecture3306, which may be used in conjunction with various hardwarearchitectures herein described. FIG. 33 is a non-limiting example of asoftware architecture and it will be appreciated that many otherarchitectures may be implemented to facilitate the functionalitydescribed herein. The software architecture 3306 may execute on hardwaresuch as machine 3400 of FIG. 34 that includes, among other things,processors 3404, memory 3414, and I/O components 3418. A representativehardware layer 3352 is illustrated and can represent, for example, themachine 3400 of FIG. 34. The representative hardware layer 3352 includesa processing unit 3354 having associated executable instructions 3304.Executable instructions 3304 represent the executable instructions ofthe software architecture 3306, including implementation of the methods,components and so forth described herein. The hardware layer 3352 alsoincludes memory and/or storage modules memory/storage 3356, which alsohave executable instructions 3304. The hardware layer 3352 may alsocomprise other hardware 3358.

In the example architecture of FIG. 33, the software architecture 3306may be conceptualized as a stack of layers where each layer providesparticular functionality. For example, the software architecture 3306may include layers such as an operating system 3302, libraries 3320,applications 3316 and a presentation layer 3314. Operationally, theapplications 3316 and/or other components within the layers may invokeapplication programming interface (API) API calls 3308 through thesoftware stack and receive a response as in response to the API calls3308. The layers illustrated are representative in nature and not allsoftware architectures have all layers. For example, some mobile orspecial purpose operating systems may not provide aframeworks/middleware 3318, while others may provide such a layer. Othersoftware architectures may include additional or different layers.

The operating system 3302 may manage hardware resources and providecommon services. The operating system 3302 may include, for example, akernel 3322, services 3324 and drivers 3326. The kernel 3322 may act asan abstraction layer between the hardware and the other software layers.For example, the kernel 3322 may be responsible for memory management,processor management (e.g., scheduling), component management,networking, security settings, and so on. The services 3324 may provideother common services for the other software layers. The drivers 3326are responsible for controlling or interfacing with the underlyinghardware. For instance, the drivers 3326 include display drivers, cameradrivers, Bluetooth® drivers, flash memory drivers, serial communicationdrivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers,audio drivers, power management drivers, and so forth depending on thehardware configuration.

The libraries 3320 provide a common infrastructure that is used by theapplications 3316 and/or other components and/or layers. The libraries3320 provide functionality that allows other software components toperform tasks in an easier fashion than to interface directly with theunderlying operating system 3302 functionality (e.g., kernel 3322,services 3324 and/or drivers 3326). The libraries 3320 may includesystem libraries 3344 (e.g., C standard library) that may providefunctions such as memory allocation functions, string manipulationfunctions, mathematical functions, and the like. In addition, thelibraries 3320 may include API libraries 3346 such as media libraries(e.g., libraries to support presentation and manipulation of variousmedia format such as MPREG4, H.264, MP3, AAC, AMR, JPG, PNG), graphicslibraries (e.g., an OpenGL framework that may be used to render 2D and3D in a graphic content on a display), database libraries (e.g., SQLitethat may provide various relational database functions), web libraries(e.g., WebKit that may provide web browsing functionality), and thelike. The libraries 3320 may also include a wide variety of otherlibraries 3348 to provide many other APIs to the applications 3316 andother software components/modules.

The frameworks frameworks/middleware 3318 (also sometimes referred to asmiddleware) provide a higher-level common infrastructure that may beused by the applications 3316 and/or other software components/modules.For example, the frameworks/middleware 3318 may provide various graphicuser interface (GUI) functions, high-level resource management,high-level location services, and so forth. The frameworks/middleware3318 may provide a broad spectrum of other APIs that may be utilized bythe applications 3316 and/or other software components/modules, some ofwhich may be specific to a particular operating system or platform.

The applications 3316 include built-in applications 3338 and/orthird-party applications 3340. Examples of representative built-inapplications 3338 may include, but are not limited to, a contactsapplication, a browser application, a book reader application, alocation application, a media application, a messaging application,and/or a game application. Third-party applications 3340 may include anyan application developed using the ANDROID™ or IOS™ software developmentkit (SDK) by an entity other than the vendor of the particular platform,and may be mobile software running on a mobile operating system such asIOS™ ANDROID™, WINDOWS® Phone, or other mobile operating systems. Thethird-party applications 3340 may invoke the API calls 3308 provided bythe mobile operating system (such as operating system 3302) tofacilitate functionality described herein.

The applications 3316 may use built in operating system functions (e.g.,kernel 3322, services 3324 and/or drivers 3326), libraries 3320, andframeworks/middleware 3318 to create user interfaces to interact withusers of the system. Alternatively, or additionally, in some systemsinteractions with a user may occur through a presentation layer, such aspresentation layer 3314. In these systems, the application/component“logic” can be separated from the aspects of the application/componentthat interact with a user.

Some software architectures use virtual machines. In the example of FIG.33, this is illustrated by a virtual machine 3310. The virtual machine3310 creates a software environment where applications/components canexecute as if they were executing on a hardware machine (such as themachine 3400 of FIG. 34, for example). The virtual machine 3310 ishosted by a host operating system (operating system (OS) 3336 in FIG.33) and typically, although not always, has a virtual machine monitor3360, which manages the operation of the virtual machine as well as theinterface with the host operating system (i.e., operating system 3302).A software architecture executes within the virtual machine 3310 such asan operating system operating system (OS) 3336, libraries 3334,frameworks 3332, applications 3330 and/or presentation layer 3328. Theselayers of software architecture executing within the virtual machine3310 can be the same as corresponding layers previously described or maybe different.

FIG. 34 is a block diagram illustrating components of a machine 3400,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 34 shows a diagrammatic representation of the machine3400 in the example form of a computer system, within which instructions3410 (e.g., software, a program, an application, an applet, an app, orother executable code) for causing the machine 3400 to perform any oneor more of the methodologies discussed herein may be executed. As such,the instructions may be used to implement modules or componentsdescribed herein. The instructions transform the general, non-programmedmachine into a particular machine programmed to carry out the describedand illustrated functions in the manner described. In alternativeembodiments, the machine 3400 operates as a standalone device or may becoupled (e.g., networked) to other machines. In a networked deployment,the machine 3400 may operate in the capacity of a server machine or aclient machine in a server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine 3400 may comprise, but not be limited to, a server computer, aclient computer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a set-top box (STB), a personal digital assistant(PDA), an entertainment media system, a cellular telephone, a smartphone, a mobile device, a wearable device (e.g., a smart watch), a smarthome device (e.g., a smart appliance), other smart devices, a webappliance, a network router, a network switch, a network bridge, or anymachine capable of executing the instructions 3410, sequentially orotherwise, that specify actions to be taken by machine 3400. Further,while only a single machine 3400 is illustrated, the term “machine”shall also be taken to include a collection of machines thatindividually or jointly execute the instructions 3410 to perform any oneor more of the methodologies discussed herein.

The machine 3400 may include processors 3404, memory memory/storage3406, and I/O components 3418, which may be configured to communicatewith each other such as via a bus 3402. The memory/storage 3406 mayinclude a memory 3414, such as a main memory, or other memory storage,and a storage unit 3416, both accessible to the processors 3404 such asvia the bus 3402. The storage unit 3416 and memory 3414 store theinstructions 3410 embodying any one or more of the methodologies orfunctions described herein. The instructions 3410 may also reside,completely or partially, within the memory 3414, within the storage unit3416, within at least one of the processors 3404 (e.g., within theprocessor's cache memory), or any suitable combination thereof, duringexecution thereof by the machine 3400. Accordingly, the memory 3414, thestorage unit 3416, and the memory of processors 3404 are examples ofmachine-readable media.

The I/O components 3418 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 3418 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones will likely include a touch input device or other such inputmechanisms, while a headless server machine will likely not include sucha touch input device. It will be appreciated that the I/O components3418 may include many other components that are not shown in FIG. 34.The I/O components 3418 are grouped according to functionality merelyfor simplifying the following discussion and the grouping is in no waylimiting. In various example embodiments, the I/O components 3418 mayinclude output components output components 3426 and input components3428. The output components 3426 may include visual components (e.g., adisplay such as a plasma display panel (PDP), a light emitting diode(LED) display, a liquid crystal display (LCD), a projector, or a cathoderay tube (CRT)), acoustic components (e.g., speakers), haptic components(e.g., a vibratory motor, resistance mechanisms), other signalgenerators, and so forth. The input components 3428 may includealphanumeric input components (e.g., a keyboard, a touch screenconfigured to receive alphanumeric input, a photo-optical keyboard, orother alphanumeric input components), point based input components(e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, orother pointing instrument), tactile input components (e.g., a physicalbutton, a touch screen that provides location and/or force of touches ortouch gestures, or other tactile input components), audio inputcomponents (e.g., a microphone), and the like.

In further example embodiments, the I/O components 3418 may includebiometric components 3430, motion components 3434, environmentalenvironment components 3436, or position components 3438 among a widearray of other components. For example, the biometric components 3430may include components to detect expressions (e.g., hand expressions,facial expressions, vocal expressions, body gestures, or eye tracking),measure biosignals (e.g., blood pressure, heart rate, body temperature,perspiration, or brain waves), identify a person (e.g., voiceidentification, retinal identification, facial identification,fingerprint identification, or electroencephalogram basedidentification), and the like. The motion components 3434 may includeacceleration sensor components (e.g., accelerometer), gravitation sensorcomponents, rotation sensor components (e.g., gyroscope), and so forth.The environment components 3436 may include, for example, illuminationsensor components (e.g., photometer), temperature sensor components(e.g., one or more thermometer that detect ambient temperature),humidity sensor components, pressure sensor components (e.g.,barometer), acoustic sensor components (e.g., one or more microphonesthat detect background noise), proximity sensor components (e.g.,infrared sensors that detect nearby objects), gas sensors (e.g., gasdetection sensors to detection concentrations of hazardous gases forsafety or to measure pollutants in the atmosphere), or other componentsthat may provide indications, measurements, or signals corresponding toa surrounding physical environment. The position components 3438 mayinclude location sensor components (e.g., a Global Position system (GPS)receiver component), altitude sensor components (e.g., altimeters orbarometers that detect air pressure from which altitude may be derived),orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 3418 may include communication components 3440operable to couple the machine 3400 to a network 3432 or devices 3420via coupling 3422 and coupling 3424 respectively. For example, thecommunication components 3440 may include a network interface componentor other suitable device to interface with the network 3432. In furtherexamples, communication components 3440 may include wired communicationcomponents, wireless communication components, cellular communicationcomponents, Near Field Communication (NFC) components, Bluetooth®components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and othercommunication components to provide communication via other modalities.The devices 3420 may be another machine or any of a wide variety ofperipheral devices (e.g., a peripheral device coupled via a UniversalSerial Bus (USB)).

Moreover, the communication components 3440 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components processors communication components 3440 mayinclude Radio Frequency Identification (RFID) tag reader components, NFCsmart tag detection components, optical reader components (e.g., anoptical sensor to detect one-dimensional bar codes such as UniversalProduct Code (UPC) bar code, multi-dimensional bar codes such as QuickResponse (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode,PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), oracoustic detection components (e.g., microphones to identify taggedaudio signals). In addition, a variety of information may be derived viathe communication components 3440, such as, location via InternetProtocol (IP) geo-location, location via Wi-Fi® signal triangulation,location via detecting a NFC beacon signal that may indicate aparticular location, and so forth.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the invention. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof, show by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be utilized and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

Details regarding an example Application Program Interface (API) that issupported by the API server 112 will now be described in further detail.Firstly, a list of functions includes authentication functions, campaignfunctions, password functions, subscription functions, social accountfunctions, user account functions and content (e.g. video) functions. Afull list of these is provided immediately below, followed by a full APIspecification.

List of API Functions

1. Authentication

-   -   a. Create a JWT authentication token

2. Campaigns

-   -   a. Create a campaign    -   b. List campaigns for a user    -   c. Update a campaign

3. Password Resets

-   -   a. Send password reset email

4. Push notification subscriptions

-   -   a. Subscribe device to notifications    -   b. Unsubscribe from notifications

5. Social Account Links

-   -   a. Check permissions    -   b. Fetch account link providers    -   c. Get connected accounts for campaign    -   d. Get connected accounts for user    -   e. Link a social account to a campaign    -   f. Link a social account to a user    -   g. Unlink an account    -   h. Update an account

6. Users

-   -   a. Check if user with email exists    -   b. Create a user    -   c. Get details for current user    -   d. Update user details

7. Videos

-   -   a. 1: Start a resumable upload    -   b. 2: Upload a video chunk    -   c. 3: Assemble chunks and complete upload    -   d. Get all videos for campaign    -   e. Get all videos for logged in user    -   f. Get all videos for specified user    -   g. Upload a Video

API Specification

Authentication

Create a JWT authentication token

Endpoint

POST /api/auth_token

Parameters

Name Description auth[email] User email auth[password] User password

Request

Route

POST /api/auth_token

Headers

Accept: application/json Content-Type: application/json Host:example.org Cookie:

Body

{  “auth”: { “email”: “felicita@grantmitchell.org”, “password”:“please123”  } }

Response

Status

201

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“0c372c8410d4f9de8eb1441e8e0d899d” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:449a8373-deeb-4371-82e0-88d2478ba90b X- Runtime: 0.033614Content-Length: 142

Body

{  “jwt”:“eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6MX0.9Ct5urrVa5MF0QDEsd5WqSV4ZqhBdDuu91HKiDQK6AQ” }

Campaigns

Create a campaign

Endpoint

POST /api/campaigns

Parameters

Name Description title campaign title url campaign URL subdomainintro_video Intro bumper video outro_video Outro bumper videodefault_thumbnail_image Fallback thumbnail for videos default_titleFallback title for videos default_description Fallback description forvideos default_tags Fallback keyword tags for videos mobile_app_iconIcon for mobile app mobile_app_header_image Header image for mobile appmobile_app_background_color Background color for mobile appstripe_card_id ID of stripe card for payment

Request

Route

POST /api/campaigns

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MTR9.Vck41ldEgOKynukjxKwj8E9y0WgqpZQxhwlRf-oElIoContent-Type: application/json Host: example.org Cookie:

Body

{   “title”: “Title of campaign”,  “test-url”,   “stripe_card_id”: 4 }

Response

Response Fields

Name Description error True/False messages Array of error messages

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: applicadon/json;charset=utf-8 ETag: W/“094929c4672f37346c7308f9aa04d48a” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:38e77fee-dc0f-44be-8a74-1929ad093c79 X-Runtime: 0.034576 Content-Length:43

Body

{  “error”: false,  “message”: “Added campaign!” }

List campaigns for a user

Endpoint

GET /api/campaigns

Request

Route

GET /api/campaigns

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MTV9.TQ4k6VNYrg33TJq2PZWUvPPnnfAymqprWZXgEUHQQp wContent-Type: application/json Host: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“225a469dffa535b5f6dd3a0dd980fe57” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:d0f28f56-88be-4326-9abb-2b1162641f3f X-Runtime: 0.011400 Content-Length:1243

Body

{  “error”: false,  “campaigns”: [ { “id”: 5, “title”: “AufderharGroup”,  “hills”, “created_at”: “2017-02-21T13:40:29.089Z”,“updated_at”: “2017-02-21T13:40:29.089Z”, “intro_video”: null,“outro_video”: null, “default_thumbnail_image”: null, “watermark_image”:null, “default_title”: null, “default_description”: null,“default_tags”: null, “mobile_app_icon”: null,“mobile_app_header_image”: null, “mobile_app_background_color”: null,“deleted_at”: null, “cover_art”: {  “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/default.png”,“thumbnail”: {  “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/thumbnail_default.png” }, “medium_thumb”: {  “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/medium_thumb_default.png”  } }, “author_name”; null, “subtitle”: null,“description”: null, “category”: null, “language”: null,“display_email”: null, “explicit_content”: null, “website”: null,“show_rss_email”: null, “mark_video_feed_title”: false,“mark_audio_feed_title”: false, “post_immediately”: true,“posting_sehedule_id”: null, “setup”: true, “subscription_id”: 5,“ten_minute_trial”: false, “intro_video_processed”: true,“outro_video_processed”: true, “active”: true, “say_hi_campaign”: false,“available_upload_seconds”: null }  ] }

Update a campaign

Endpoint

PATCH /api/campaigns/:id

Parameters

Name Description id Unique ID for campaign title campaign title urlcampaign URL subdomain intro_video Intro bumper video outro_video Outrobumper video default_thumbnail_image Fallback thumbnail for videosdefault_title Fallback title for videos default_description Fallbackdescription for videos default_tags Fallback keyword tags for videosmobile_app_icon Icon for mobile app mobile_app_header_image Header imagefor mobile app mobile_app_background_color Background color for mobileapp stripe_card_id ID of stripe card for payment

Request

Route

PATCH /api/campaigns/6

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MTd9.9z8nhYdrONCRCDJ5XYCxkaNC9Rj-Al8kyeX2pob3v6YContent-Type: application/json Host: example.org Cookie:

Body

{  “title”: “New title” }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“ee87b1062eeafd935a221e3af61d6f8f” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:75d03ea7-b544-4dd3-b247-8423ee204e36 X-Run time: 0.017785Content-Length: 1235

Body

{  “error”: false,  “campaign”: {  “id”: 6,  “ten_minute_trial”: false, “subscription_id”: 6,  “title”: “New title”, “wehner”,  “intro_video”:null,  “outro_video”: null,  “default_thumbnail_image”: null, “watermark_image”: null,  “mobile_app_icon”: null, “mobile_app_header_image”: null,  “cover_art”: { “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/default.png”, “thumbnail”: { “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/thumbnail_default.png”  },  “medium_thumb”: { “LinkAddress:dev-congo.s3.amazonaws/../tmp/podcastio-dev/defaults/cover_art/medium_thumb_default.png”  }  },  “created_at”: “2017-02-21T13:40:29.130Z”, “updated_at”: “2017-02-21T13:40:29.151Z”,  “default_title”: null, “default_description”: null,  “default_tags”: null, “mobile_app_background_color”: null,  “deleted_at”: null, “author_name”: null,  “subtitle”: null,  “description”: null, “category”: null,  “language”: null,  “display_email”: null, “explicit_content”: null,  “website”: null,  “show_rss_email”: null, “mark_video_feed_title”: false,  “mark_audio_feed_title”: false, “post_immediately”: true,  “posting_schedule_id”: null,  “setup”: true, “intro_video_processed”: true,  “outro_video_processed”: true, “active”: true,  “say_hi_campaign”: false,  “available_upload_seconds”:null  } }

Password Resets

Send password reset email

Endpoint

POST /api/users/password

Parameters

Name Description

email Email address for user

Request

Route

POST /api/users/password

Headers

Accept: application/json Content-Type: application/json Host:example.org Cookie:

Body

{  “email”: “shaina_ohara@kemmerrolfson.net” }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/jsonCache-Control: no-cache X-Request-Id:3211d3d6-0647-41b0-b083-b4ee832139e0 X-Runtime: 0.356213 Content-Length:0

Push notification subscriptions

Subscribe device to notifications

Endpoint

POST /api/push_notifications_subscription

Parameters

Name Description device_token IOS device token app_name Name of app; Oneof world-race or congo

Request

Route

POST /api/push_notifications_subscription

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MjR9.28IRqkGqIpSJGoqnJZ9USaV-1dZP8GoxJKy4czDiEQAContent-Type: application/json Host: example.org Cookie:

Body

{  “device_token”: “tok”,  “app_name”: “congo” }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: text/html Cache-Control:no-cache X-Request-Id: 98ba1e65-4298-40a3-a0bd-ef6ba6eb506f X-Runtime:0.009883 Content-Length: 0

Unsubscribe from notifications

Endpoint

DELETE /api/push_notifications_subscription

Request

Route

DELETE /api/push_notifications_subscription

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MjV9.5mBQubNS-EPJNGaLfLjGDyc_IHFXX2NI4xybItHqiU8Content-Type: application/json Host: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: text/html Cache-Control:no-cache X-Request-Id: a20b1b1d-3a39-4bec-9a8f-1639e3a2ce3b X-Runtime:0.038769 Content-Length: 0

Social Account Links

Check permissions

Endpoint

GET /api/account_links/permissions

Parameters

Name Description

campaign_id Unique identifier for the campaign

Request

Route

GET /api/account_links/permissions?campaign_id=1

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6NX0.FAPzWxqLKqxPXCRvUWJTMnZFMvXHSaWImFQ_6-c2ELkHost: example.org Cookie:

Query Parameters

campaign_id=1.

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“ec64426c3fd0d4607ab2b0328398d046” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:d6001c15-8225-4554-9035-2f0ac025f4f0 X-Runtime: 0.010202 Content-Length:45

Body

{  “index”: true,  “create”: false,  “destroy”: false }

Fetch account link providers

Endpoint

GET /api/account_links/providers

Request

Route

GET /api/account_links/providers

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6MTF9.AZ-rtn0QIxIhrhteJ7Kq0ajGTLF7pALiuhx7wfvnrfsHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“26f9a6e4e65234d11ebec9baee1bfc80” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:5232e17f-e933-4bad-9377-94fc73eb0c1b X-Runtime: 0.003121 Content-Length:721

Body

[  { “client_id”: “ID”, “scope”: “userinfo.email, youtube”, “class”:“YoutubeAccount”, “prompt”: “consent”, “auth_url”: “LinkAddress:accounts.google/o/oauth2/auth”, “provider”: “google_oauth2”  }, { “client_id”: “KEY”, “class”: “TwitterAccount”, “use_authorize”: true,“provider”: “twitter”  },  { “client_id”: “KEY”, “class”:“VimeoAccount”, “scope”: “upload edit delete”, “auth_url”: “LinkAddress:api.vimeo/oauth/authorize”, “provider”: “vimeo”  },  {“client_id”: “KEY”, “class”: “SoundCloudAccount”, “auth_url”: “LinkAddress:api.soundcloud/connect”, “provider”: “soundcloud”  },  {“client_id”: “KEY”, “class”: “FacebookAccount”, “scope”:“publish_actions,manage_pages,publish_pages,user_managed_groups”,“auth_url”: “Link Address:www.facebook/dialog/oauth”, “provider”:“facebook”  } ]

Get connected accounts for campaign

Endpoint

GET /api/campaigns/:campaign_id/account_links

Request

Route

GET /api/campaigns/3/account_links

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOJE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MTJ9.STg4MOXZ5zcP0J4nwOmbqTimhPRc7AG0DPPIIf1wUbQHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“bd87ab3ec4293ab731dd52ca18f5c35a” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:f68f911e-0809-4ea1-8195-8fcb06a658cd X-Runtime: 0.011645 Content-Length:229

Body

[  { “id”: 7, “type”: “YoutubeAccount”, “created_at”:“2017-02-21T13:40:29.005Z”, “updated_at”: “2017-02-21T13:40:29.005Z”,“account_id”: “6581119865”, “name”: null, “enabled”: true,“profile_image_url”: null, “owner_type”: “Campaign”, “owner_id”: 3  } ]

Get connected accounts for user

Endpoint

GET /api/account_links

Request

Route

GET /api/account_links

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eX.AiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6M30.YPs9NEMbSLWrx2SpMVc_BIbQ2DwrtxwI7Q2NCiSdIUkHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“4d7f3082046cbaa4abde650ce4f51ad5” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:35b5c246-4154-453f-842b-696c44ae9257 X-Runtime: 0.053684 Content-Length:225

Body

[  { “id”: 2, “type”: “YoutubeAccount”, “created_at”:“2017-02-21T13:40:28.619Z”, “updated_at”: “2017-02-21T13:40:28.619Z”,“account_id”: “7649747097”, “name”: null, “enabled”: true,“profile_image_url”: null, “owner_type”: “User”, “owner_id”: 3  } ]

Link a social account to a campaign

Endpoint

POST /api/account_links

Parameters

Name Description provider Provider name code Authentication code fromprovider. for code authentication redirect_uri The callback url that wasused in the auth flow. Required for code authenticationoauth_access_token A ready-to-use oauth token for accessing the account.oauth_access_token_secret For Twitter: The secret associated with theoauth token. campaign_id Unique ID of campaign to add this link to.Account will be linked to user instead if this is not specified.account_id Unique identifier from the provider for this account

Request

Route

POST /api/account_links

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6OX0.J8cEYH0aE2l9w4VWeUp4gCSD8YLRQXuYfRta18GzBo0Host: example.org Cookie:

Body

{  “provider”: “facebook”,  “code”: “123”,  “redirect_uri”: “test_url”, “campaign_id”: 2 }

Response

Response Fields

Name Description error This is set to true when there is an errormessages On error, this field returns a list of validation errors

Status

200

Headers

X-Frame-Optioas: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“5c773e0efb1e772a002c2338e263a75b” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:4a517f6a-5570-468a-9c15-534becdf032b X-Runtime: 0.073164 Content-Length:251

Body

{  “id”: 5,  “type”: “FacebookAccount”,  “created_at”:“2017-02-21T13:40:28.928Z”,  “updated_at”: “2017-02-21T13:40:28.928Z”, “account_id”: “1438666419797322”,  “name”: “Test User”,  “enabled”:false,  “profile_image_url”: “profile-pic”,  “owner_type”: “Campaign”, “owner_id”: 2 }

Link a social account to a user

Endpoint

POST /api/account_links

Parameters

Name Description provider Provider name code Authentication code fromprovider. Required for code authentication redirect_uri The callback urlthat was used in the auth flow. Required for code authenticationoauth_access_token A ready-to-use oauth token for accessing the account.oauth_access_token_secret For Twitter: The secret associated with theoauth token. campaign_id Unique ID of campaign to add this link to.Account will be linked to user instead if this is not specified.account_id Unique identifier from the provider for this account

Request

Route

POST /api/account_links

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOJE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6OH0.ZA9YBg_UnzzO_imfiXNi_22E61lwWSMsZYIbjBtxoKcHost: example.org Cookie:

Body

{  “provider”: “twitter”,  “oauth_access_token”: “token”, “oauth_access_token_secret”: “secret” }

Response

Response Fields

Name Description error This is set to true when there is an errormessages On error, this field returns a list of validation errors

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“3930ff27a30a37ed42b3ff9c626bbea3” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:93f46530-d7f0-4e80-b12c-aa9dc2771a48 X-Runtime: 0.012336 Content-Length:233

Body

{  “id”: 4,  “type”: “TwitterAccount”,  “created_at”:“2017-02-21T13:40:28.849Z”,  “updated_at”: “2017-02-21T13:40:28.849Z”, “account_id”: “1”,  “name”: “fetched_name”,  “enabled”; true, “profile_image_url”: “fetched_img”,  “owner_type”: “User”,  “owner_id”:8 }

Unlink an account

Endpoint

DELETE /api/account_links/:account_id

Request

Route

DELETE /api/account_links/3

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOJE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6Nn0.cI847oCjjLckVVeXymizIdwMBN3jghbDR_vS5RNGT8gHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“ebdb75071b914b79cf830c25f08251a9” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:873c2fcf-f0ca-4092-8ce7-3175ca74ce83 X-Runtime: 0.006953 Content-Length:223

Body

{ “id”: 3, “type”: “YoutubeAccount”, “created_at”:“2017-02-21T13:40:28.793Z”, “updated_at”: “2017-02-21T13:40:28.793Z”,“account_id”: “6054872090”, “name”: null, “enabled”: true,“profile_image_url”: null, “owner_type”: “User”, “owner_id”: 6 }

Update an account

Endpoint

PUT /api/account_links/:account_id

Parameters

Name Description enabled Enabled for publishing

Request

Route

PUT /api/account_links/1

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOJE0ODc3NzA4MjgsImF1ZCI6ZmFsc2UsInN1YiI6Mn0._hbkbdj3E3_rmDP10lnfZV_WxEnFP8SKA8SInAleT9IHost: example.org Cookie:

Body

{ “enabled”: true }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“3fca2ab9a4135bf568934334d9814bd0” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:05f8783d-c3f7-428e-ade3-df0bf1791491 X-Runtime: 0.025669 Content-Length:223

Body

{ “id”: 1, “enabled”: true, “owner_id”: 2, “owner_type”: “User”, “type”:“YoutubeAccount”, “created_at”: “2017-02-21T13:40:28.580Z”,“updated_at”: “2017-02-21T13:40:28.605Z”, “account_id”: “7365802448”,“name”: null, “profile_image_url”: null }

Users

Check if user with email exists

Endpoint

GET /api/users/existing_user

Parameters

Name Description email Email of user you wish to check

Request

Route

GET /api/users/existing_user?email=user%40example

Headers

Accept: application/json Content-Type: application/json Host:example.org Cookie:

Query Parameters

email=user@example

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“b89187802fd51ad35f85f38b54fb4d0a” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:021c7f5f-02fb-46e1-84e8-70b49157db9b X-Runtime: 0.004440 Content-Length:35

Body

{ “error”: false. “user_exists”: false }

Create a user

Endpoint

POST /api/users

Parameters

Name Description email Email address for user name DEPRECATED: Name ofuser first_name First name of user last_name Last name of user passwordPassword for user campaign_id Campaign unique ID. User will beassociated with this campaign if specified. profile_picture Image filefor user profile picture

Request

Route

POST /api/users

Headers

Accept: application/json Content-Type: application/json Host:example.org Cookie:

Body

{ “email”: “user@example”, “first_name”: “John”, “last_name”: “Doe”,“password”: “supersecret”, “campaign_id”: 7 }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“d44c1f2a6531d774fda6e6eba865f1ba” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:20665923-cff0-4ec0-a7a5-529cce189f5c X-Runtime: 0.056260 Content-Length:15

Body

{ “error”: false }

Get details for current user

Endpoint

GET /api/users/:user_id

Parameters

Name Description user_id User ID or “me” for current user

Request

Route

GET /api/users/me

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOJE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MjJ9.K3q_v8V-YLBfbwk56xKigPlXdRoexPKzhqpesXsIe4kHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“e19ef6cd33b4d83d137c1f2e69f738d4” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:cb1c749b-f79c-4ad5-9c4c-f8ea1f8427b4 X-Runtime: 0.004317 Content-Length:319

Body

{ “id”: 22, “email”: “agustin@connlind.org”, “profile_picture”: {  “LinkAddress:www.gravatar/avatar/808653696cecd23f0b3e75ae0f77a982?s=180&d=mm”“thumbnail”: {  “LinkAddress:www.gravatar/avatar/808653696cecd23f0b3e75ae0f77a982?s=50&d=mm”} }, “first_name”: “Claude”, “last_name”: “Hilpert”, “name”: “ClaudeHilpert” }

Update user details

Endpoint

PUT /api/users/:user_id

Parameters

Name Description user_id User ID or “me” for current user nameDEPRECATED: Updated name first_name Updated first name last_name Updatedlast name password New password profile_picture Image file for userprofile picture

Request

Route

PUT /api/users/me

Headers

Accept: application/json Content-Type: application/json Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MjN9.S9Cgn_KDEn-daVI6mZ6-aGny2-LjHcEB8UsRF9QlgQIHost: example.org Cookie:

Body

{ “first_name”: “John”, “last_name”: “Doe” }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“499f51b3f06ae0a75f8c8d9e741872e0” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:445c9844-c89b-4054-ba4b-4eacdf9b01e8 X-Runtime: 0.005835 Content-Length:317

Body

{ “id”: 23, “first_name”: “John”, “last_name”: “Doe”, “email”:“christa.cummerata@daviswiza.co”, “profile_picture”: {  “LinkAddress:www.gravatar/avatar/5678519c5c11f87efc96c6fd56c9bd46?s=180&d=mm”,“thumbnail”: {  “LinkAddress:www.gravatar/avatar/5678519c5c11f87efc96c6fd56c9bd46?s=50&d=mm”} }, “name”: “John Doe” }

Videos

1: Start a resumable upload

Endpoint

POST /api/videos/upload/new

Parameters

Name Description filename Name of file being uploaded

Request

Route

POST /api/videos/upload/new

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6MzJ9.Rf0dw-IZpjbtBKGGhFIwXIpeAVnV8mvWxAivfN3FknYContent-Type: application/json Host: example.org Cookie:

Body

{ “filename”: “video.mp4” }

Response

Response Fields

Name Description upload_id Unique id for this upload

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“f11c5982e92cb1d583e80ea5cc12c61a” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:7a7310cb-8297-4475-b5c6-1d2bb23b486d X-Runtime: 0.005660 Content-Length:50

Body

{ “error”: false, “upload_id”: “1234:nqm6jgvideo.mp4” }

2: Upload a video chunk

Endpoint

PUT /api/videos/upload/continue

Parameters

Name Description upload_id Upload id returned from/api/videos/upload/new chunk Binary data chunk. Must be at least 5 MBunless it is last chunk chunk_index A one based index of where thischunk appears in the file

Request

Route

PUT /api/videos/upload/continue

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6NDR9._dW-UdbN9V4vd3thNPsFvnW-XYKIS9BWiiK4wRhgmecHost: example.org Content-Type: multipart/form-data;boundary=----------XnJLe9ZIbbGUYtzPQJ16u1 Cookie:

Body

------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data:name=“upload_id” 1234:video.mp4 ------------XnJLe9ZIbbGUYtzPQJ16u1Content-Disposition: form-data; name=“chunk”; filename=“video.mp4”Content-Type: video/mp4 Content-Length: 2107842 [uploaded data]------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data;name=“chunk_index” 1 ------------XnJLe9ZIbbGUYtzPQJ16u1--

Response

Response Fields

Name Description chunk_id A unique identifier for this chunk

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“1dc8308d963a9d0b8b686a3a608f8ef8” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:d8bccba8-5b63-4063-a630-dd0a3499bc6b X-Runtime: 0.018058 Content-Length:37

Body

{ “error”: false, “chunk_id”: “chunk_id” }

3: Assemble chunks and complete upload

Endpoint

POST /api/videos/upload/complete

Parameters

Name Description upload_id Upload id returned from/api/videos/upload/new chunks Array of chunk ids. They will be assembledin the order given campaign_id Campaign ID title Video Title descriptionVideo Description tags Comma-separated list of keywords thumbnail Videothumbnail latitude Latitude coordinate where video was taken longitudeLongitude coordinate where video was taken account_ids DEPRECATED - Useexclude_account_ids instead: IDs of personal social accounts to publishto exclude_account_ids IDs of personal and campaign accounts to exclude,all are included by default

Request

Route

POST /api/videos/upload/complete

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6NDV9.GcVs3qaxOfBdD5zFL--_tW1feSH2cvloIA68B4C1S4UContent-Type: application/json Host: example.org Cookie:

Body

{ “upload_id”: “1234:video.mp4”, “chunks”: [ “chunk1id”, “chunk2id” ],“campaign_id”: 17, “title”: “Title of Video”, “description”: “Thisdescribes the video perfectly.” }

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“d44c1f2a6531d774fda6e6eba865f1ba” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:c59dbb5d-cd3f-49ed-b44b-7cc1a259ba1e X-Runtime: 0.039062 Content-Length:15

Body

{ “error”: false }

Get all videos for campaign

Endpoint

GET /api/campaigns/:campaign_id/videos

Parameters

Name Description page Page offset for pagination per_page Number ofrecords to display per page campaign_id Campaign ID user_id Filter byuploader id

Request

Route

GET /api/campaigns/15/videos?user_id=41

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6Mzl9.Ko8RAEc72nUaVn2m3qBkl5-Dq-eZ3oAf36icnylWbPoHost: example.org Cookie:

Query Parameters

user_id=41

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Per-Page: 25 Total: 1 Content-Type:application/json; charset=utf-8 ETag:W/“265f643dc353dde9fea63e940dd092d3” Cache-Control: max-age=0, private,must-revalidate X-Request-Id: aca51612-6158-4234-9431-0fec720360ecX-Runtime: 0.019041 Content-Length: 789

Body

[ { “id”: 6, “video”: {“/home/jon/dev/congo-backend/tmp/podcastio-dev/uploads/video/video/6/video.mp4”}. “audio”: null, “title”: “Test video”, “description”: “Test video fromFactoryGirl.”, “thumbnail”: null, “campaign_id”: 15, “created_at”:“2017-02-21T13:40:30.609Z”, “updated_at”: “2017-02-21T13:40:30.609Z”,“latitude”; null, “longitude”: null, “creator_id”: 41,“video_length_seconds”: 13, “tags_list”: [ “my”, “awesome”, “keywords”], “status”: “pending”, “published_videos”: [ { “id”: 3, “created_at”:“2017-02-21T13:40:30.619Z”, “link”: “LinkAddress:www.youtube/watch?v=UID”, “status”: “pending”, “account_type”:“Youtube”, “account_owner_type”: “Campaign”, “account_link”: { “id”: 14,“type”: “YoutubeAccount”, “account_id”: “1739444582”, “name”: null,“enabled”: true, “profile_image_url”: null, “owner_type”: “Campaign”,“owner_id”: 15 } } ] } ]

Get all videos for logged in user

Endpoint

GET /api/videos

Parameters

Name Description page Page offset for pagination per_page Number ofrecords to display per page

Request

Route

GET /api/videos

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6NDJ9.1NGeYa_B0zmKXOodlERhIuZ4WcJUpOwCNvU90f7NqEIHost: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Per-Page: 25 Total: 1 Content-Type:application/json; charset=utf-8 ETag:W/“f98cca02a62d6e37a048853ad55d34a8” Cache-Control: max-age=0, private,must-revalidate X-Request-Id: 89af0193-cc2e-4193-aff2-d4c5d80ec9c9X-Runtime: 0.015205 Content-Length: 455

Body

[ { “id”: 7, “video”: {“/home/jon/dev/congo-backend/tmp/podcastio-dev/uploads/video/video/7/video.mp4”}, “audio”: null, “title”: “Test video”, “description”: “Test video fromFactoryGirl.”, “thumbnail”: null, “campaign_id”: 16, “created_at”:“2017-02-21T13:40:30.705Z”, “updated_at”: “2017-02-21T13:40:30.705Z”,“latitude”; null, “longitude”: null, “creator_id”: 42,“video_length_seconds”: 13, “tags_list”: [ “my”, “awesome”, “keywords”], “status”: “pending”, “published_videos”: [ ] } ]

Get all videos for specified user

Endpoint

GET /api/users/:user_id/videos

Parameters

Name Description page Page offset for pagination per_page Number ofrecords to display per page user_id Unique user ID

Request

Route

GET /api/users/35/videos

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzIlNiJ9.eyJleHAiOjE0ODc3NzA4MzAsImF1ZCI6ZmFsc2UsInN1YiI6MzN9.XmHk8Qm_6AEAHMZlUA5Kv5NU7rLcPzcnvLp0H_RzwCQ Host: example.org Cookie:

Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Per-Page: 25 Total: 1 Content-Type:application/json; charset=utf-8 ETag:W/“a96878f5b59bdd3c303742a4534a4ed8” Cache-Control: max-age=0, private,must-revalidate X-Request-Id: 3905763e-abd4-4d09-8988-bf9e4421f2d4X-Runtime: 0.020855 Content-Length: 455

Body

[ { “id”: 4, “video”: {“/home/jon/dev/congo-backend/tmp/podcastio-dev/uploads/video/video/4/video.mp4”}, “audio”: null, “title”; “Test video”, “description”: “Test video fromFactoryGirl.”, “thumbnail”: null, “campaign_id”: 13, “created_at”:“2017-02-21T13:40:30.428Z”, “updated_at”: “2017-02-21T13:40:30.428Z”,“latitude”: null, “longitude”: null, “creator_id”: 35,“video_length_seconds”: 13, “tags_list”: [ “my”, “awesome”, “keywords”], “status”: “pending”, “published_videos”: [ ] } ]

Upload a Video

This endpoint is for uploading an entire video with one request. Pleaseuse the resumable upload API instead if possible.

Endpoint

POST /api/videos

Parameters

Name Description video[video] Video File video[campaign_id] Campaign IDvideo[title] Video Title video[description] Video Descriptionvideo[tags] Comma-separated list of keywords video[thumbnail] Videothumbnail video[latitude] Longitude coordinate where video was takenvideo[longitude] Latitude coordinate where video was takenvideo[account_ids] DEPRECATED - Use exclude_account_ids instead: IDs ofpersonal social accounts to publish to video[exclude_account_ids] IDs ofpersonal and campaign accounts to exclude, all are included by default

Request

Route

POST /api/videos

Headers

Authorization: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc3NzA4MjksImF1ZCI6ZmFsc2UsInN1YiI6MjZ9.L6ykrf6LMmKVXmJboufru42o7OZt0f-e2_BWznZCBxMHost: example.org Content-Type: multipart/form-data:boundary=----------XnJLe9ZIbbGUYtzPQJ16u1 Cookie:

Body

------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data;name=“video[video]”; filename=“video.mp4” Content-Type: video/mp4Content-Length: 2107842 [uploaded data]------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data;name=“video[campaign_id]” 9 ------------XnJLe9ZIbbGUYtzPQJ16u1Content-Disposition: form-data; name=“video[title]” Title of Video------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data:name=“video[description]” This describes the video perfectly.------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data;name=“video[exclude_account_ids][ ]” 11------------XnJLe9ZIbbGUYtzPQJ16u1 Content-Disposition: form-data;name=“video[exclude_account_ids][ ]” 10------------XnJLe9ZIbbGUYtzPQJ16u1--

Response

Response Fields

Name Description error True/False messages Array of error messages

Status

200

Headers

X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniff Content-Type: application/json;charset=utf-8 ETag: W/“d44c1f2a6531d774fda6e6eba865f1ba” Cache-Control:max-age=0, private, must-revalidate X-Request-Id:d6a2fd98-765e-40d6-b878-0ea828be33c7 X-Runtime: 0.157301 Content-Length:15

Body

{ “error”: false }.·

What is claimed is:
 1. A method to process video data, the methodcomprising: accessing a content file including a video payload andmetadata, the metadata including a publication identifier identifying apublication entity; by one or more processors, using the publicationidentifier to identify supplemental content and access the supplementalcontent from a storage device; by the one or more processors, modifyingthe video payload with the supplemental content to create a supplementedvideo; determining a moderation control for a publication entity usingthe publication identifier; selectively presenting the supplementedvideo to the publication entity for approval based on the moderationcontrol, the selective presentation of the supplemented videocomprising: adding the supplemented video to a content queue; enablingadjustment of the supplemented video within the content queue; enablingrejection of the supplemented video with comments from a moderator; andenabling scheduling of transmission of the supplemented video at aspecific date and time; using the publication identifier, identifying atleast one third-party video service to which to publish the supplementedvideo; and transmitting the supplemented video, together withpublication credentials, to the third-party video service.
 2. The methodof claim 1, wherein the supplemental content comprises a bumper videosegment and the modifying of the video payload comprises modifying thevideo payload with the bumper video segment so that the bumper videosegment at least one of precedes and proceeds the video payload in thesupplemented video.
 3. The method of claim 1, further comprising:providing publication approval recommendations using artificialintelligence (AI) based on at least one of demographic details of apublishing user, a determined quality of the video payload, a determinedlength of the video payload, stability of the video payload and metadataassociated with the video payload.
 4. The method of claim 1, furthercomprising: receiving an approval for publication of the supplementedvideo from the publication entity; and transmitting the supplementedvideo to the third-party video service responsive to receipt of theapproval.
 5. The method of claim 1, further comprising: receiving arejection of the supplemented video from the publication entity; andselectively not transmitting the supplemented video to the third-partyservice responsive to receipt of the rejection.
 6. The method of claim1, further comprising: using the publication identifier, identifying aplurality of third-party video services to which to publish thesupplemented video; and transmitting the supplemented video, togetherwith publication credentials, to the plurality of third-party videoservices.
 7. The method of claim 1, wherein the supplemental contentcomprises a logo.
 8. The method of claim 1, wherein the supplementalcontent comprises at least one of an image representative of the videopayload, a video title, a tag and a description regarding the videopayload.
 9. A system, the system comprising: at least one processor; andat least one memory storing instructions that, when executed by the atleast one processor, configure the system to: access a content fileincluding a video payload and metadata, the metadata including apublication identifier identifying a publication entity; using thepublication identifier, identify supplemental content and access thesupplemental content from a storage device; modify the video payloadwith the supplemental content to create a supplemented video; determinea moderation control for a publication entity using the publicationidentifier; selectively presenting the supplemented video to thepublication entity for approval based on the moderation control, theselective presentation of the supplemented video comprising: adding thesupplemented video to a content queue; enabling adjustment of thesupplemented video within the content queue; enabling rejection of thesupplemented video with comments from a moderator; and enablingscheduling of transmission of the supplemented video at a specific dateand time; using the publication identifier, identify at least onethird-party video service to which to publish the supplemented video;and transmit the supplemented video, together with publicationcredentials, to the third-party video service.
 10. The system of claim9, wherein the supplemental content comprises a bumper video segment andthe modifying of the video payload comprises modifying the video payloadwith the bumper video segment so that the bumper video segment at leastone of precedes and proceeds the video payload in the supplementedvideo.
 11. The system of claim 9, wherein the instructions furtherconfigure the system to: provide publication approval recommendationsusing artificial intelligence (AI) based on at least one of demographicdetails of a publishing user, a determined quality of the video payload,a determined length of the video payload, stability of the video payloadand metadata associated with the video payload.
 12. The system of claim9, wherein the instructions further configure the system to: using thepublication identifier, identify a plurality of third-party videoservices to which to publish the supplemented video; and transmit thesupplemented video, together with publication credentials, to theplurality of third-party video services.
 13. A non-transitorymachine-readable medium including instructions which, when read by amachine, cause the machine to perform operations for processing videodata, comprising: accessing a content file including a video payload andmetadata, the metadata including a publication identifier identifying apublication entity; using the publication identifier to identifysupplemental content and access the supplemental content from a storagedevice; modifying the video payload with the supplemental content tocreate a supplemented video; determining a moderation control for apublication entity using the publication identifier; selectivelypresenting the supplemented video to the publication entity for approvalbased on the moderation control, the selective presentation of thesupplemented video comprising: adding the supplemented video to acontent queue; enabling adjustment of the supplemented video within thecontent queue; enabling rejection of the supplemented video withcomments from a moderator; and enabling scheduling of transmission ofthe supplemented video at a specific date and time; using thepublication identifier, identifying at least one third-party videoservice to which to publish the supplemented video; and transmitting thesupplemented video, together with publication credentials, to thethird-party video service.
 14. The non-transitory machine-readablemedium of claim 13 wherein the supplemental content comprises a bumpervideo segment and the modifying of the video payload comprises modifyingthe video payload with the bumper video segment so that the bumper videosegment at least one of precedes and proceeds the video payload in thesupplemented video.
 15. The non-transitory machine-readable medium ofclaim 13 wherein the operations further comprise: receiving an approvalfor publication of the supplemented video from the publication entity;and transmitting the supplemented video to the third-party video serviceresponsive to receipt of the approval.